package com.mango.avtiveMQ;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * @Author:  MangoCookieMilk
 * @Date:     2021/2/28 13:22
 */
public class ActiveMQProducer_TX {
    //activemq的服务地址  这里使用的是tcp协议，源码里可以看到
    public static final String ACTIVE_URL="tcp://101.201.249.141:61616";
    public static final String QUEUE_NAME="tx";
    public static void main(String[] args) throws JMSException {
        //创建连接工厂 ,，按照定的url地址给定默认的用户名和密码
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVE_URL);
        //通过连接工厂获取connection连接 并启动访问
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
        //创建会话session  需要两个参数，第一个事务，第二个签收
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
        //创建目的地(选择是队列还是主题)
        Queue queue = session.createQueue(QUEUE_NAME);
        //创建消息的生产者
        MessageProducer messageProducer = session.createProducer(queue);

        //通过使用消息生产者messageProducer生产3条消息发送到队列中
        for (int i = 1; i <=3 ; i++) {
            //创建消息   一个字符串消息
            TextMessage textMessage = session.createTextMessage("msg---->" + i);
            //通过messageProducer 发布消息
            messageProducer.send(textMessage);
        }
        //关闭资源
        messageProducer.close();
        //开启事务后需要手动在session关闭前，手动提交，关闭事务会自动提交
        session.commit();
        session.close();
        connection.close();
        System.out.println("tx消息发送到MQ成功");
    }
}
